登陆
1 2
| $ mysql [-h hostname] -u username -p Enter Password:
|
新建数据库
1
| mysql> create database dbname;
|
创建用户和分配权限
1 2 3 4 5
| GRANT privileges [columes] ON item TO user_name [IDENTIFIED BY 'password'] [REQUIRE ssl_options] [WITH [GRANT OPTION | limit_options] ]
|
创建用户
1
| CREATE USER 'username'@'host' IDENTIFIED BY 'password';
|
授权
1
| GRANT privileges ON databasename.tablename TO 'username'@'host'
|
说明: privileges – 用户的操作权限,如SELECT
, INSERT
, UPDATE
等.如果要授予所 的权限则使用ALL
.;databasename
– 数据库名,tablename
-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*
表示, 如: 1
| GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
|
使用数据库
创建数据库表
1 2 3 4
| mysql> CREATE DATABASE dbname; mysql> CREATE TABLE tablename (columns); // 丛文件中载入 mysql> -h host -u username -D dbname -p < bookorama.sql;
|
举例: 1 2 3 4 5 6
| mysql> CREATE TABLE books( isbn char(13) NOT NULL PRIMARY KEY, author char(50), title char(100), price float(4, 2) );
|
查看数据库
1 2 3
| mysql> show tables; mysql> show database; mysql> describe tables; // 查看某个表的详细信息
|
索引
索引的创建可以在CREATE TABLE
语句中进行,也可以单独用CREATE INDEX
或ALTER TABLE
来给表增加索引。删除索引可以利用ALTER TABLE
或DROP INDEX
语句来实现。
1
| CREATE [UNIQUE | FULLTEXT] INDEX index_name ON table_name (index_column_name [(length)] [ASC|DESC], ...)
|
使用ALTER TABLE
语句创建索引
语法如下 1 2 3
| alter table table_name add index index_name (column_list) ; alter table table_name add unique (column_list) ; alter table table_name add primary key (column_list) ;
|
其中包括 * 普通索引、UNIQUE
索引和PRIMARY KEY
索引3种创建索引的格式 * table_name
是要增加索引的表名 * column_list
指出对哪些列进行索引,多列时各列之间用逗号分隔。 * 索引名index_name
可选,缺省时,MySQL将根据第一个索引列赋一个名称。 * ALTER TABLE
允许在单个语句中更改多个表,因此可以同时创建多个索引。
创建索引的示例如下: 1 2
| mysql> alter table table_test add index index_test1(name) ; Query OK, 2 rows affected (0.08 sec)
|
使用CREATE INDEX
语句对表增加索引
能够增加普通索引和UNIQUE
索引两种。其格式如下: 1 2
| mysql> create index index_name on table_name (column_list) ; create unique index index_name on table_name (column_list) ;
|
创建索引的示例如下: 1 2
| mysql> create index index_test2 on table_test(age); Query OK, 2 rows affected (0.08 sec)
|
说明:table_name
、index_name
和column_list
具有与ALTER TABLE
语句中相同的含义,索引名不可选。另外,不能用CREATE INDEX
语句创建PRIMARY KEY
索引。
删除索引
删除索引可以使用ALTER TABLE
或DROP INDEX
语句来实现。
DROP INDEX
可以在ALTER TABLE
内部作为一条语句处理,其格式如下: 1 2 3
| drop index index_name on table_name ; alter table table_name drop index index_name ; alter table table_name drop primary key ;
|
其中,在前面的两条语句中,都删除了table_name
中的索引index_name
。而在最后一条语句中,只在删除PRIMARY KEY
索引中使用,因为一个表只可能有一个PRIMARY KEY
索引,因此不需要指定索引名。如果没有创建PRIMARY KEY
索引,但表具有一个或多个UNIQUE
索引,则MySQL将删除第一个UNIQUE
索引。
如果从表中删除某列,则索引会受影响。对于多列组合的索引,如果删除其中的某列,则该列也会从索引中删除。如果删除组成索引的所有列,则整个索引将被删除。
删除索引的操作,如下面的代码: 1 2
| mysql> drop index name on table_test ; Query OK, 2 rows affected (0.08 sec)
|
数据类型
整数类型
TINYINT[(M)] |
-127128或0255 |
1 |
非常小的整数 |
BIT |
|
|
TINYINT的同义词 |
BOOL |
|
|
TINYINT的同义词 |
SMALLINT[(M)] |
-3276832767或065535 |
2 |
小型整数 |
MEDIUMINT[(M)] |
-83886088883607或016777215 |
3 |
中型整数 |
INT[(M)] |
\(-2^{31}\)\(2^{31}-1\)或0\(2^{32}-1\) |
4 |
一般整数 |
INTEGER[(M)] |
|
|
INT的同义词 |
BIGINT[(M)] |
\(-2^{63}\)\(2^{63}-1\)或0\(2^{64}-1\) |
8 |
大型整数 |
浮点类型
FLOAT(精度) |
取决于精度 |
可变 |
可用于指定单精度和双精度浮点数 |
FLOAT[(M, D)] |
+- 1.17549E-38 |
4 |
单精度浮点数,等同于FLOAT(4) |
DOUBLE[(M), D] |
+- 3.40282E+308 |
8 |
双精度浮点数,等同于FLOAT(8) |
DOUBLE |
|
|
DOUBLE[(M, D)]的同义词 |
PRECISION[(M, D)] |
|
|
同上 |
REAL[(M, D)] |
|
|
同上 |
DECIMAL[(M [,D])] |
可变 |
M + 2 |
浮点数,以char存储。范围取决于M |
NUMERIC[(M, D)] |
同上 |
|
DECIMAL的同义词 |
DEC[(M, D)] |
同上 |
|
DECIMAL的同义词 |
FIXED[(M, D)] |
同上 |
|
DECIMAL的同义词 |
日期和时间类型
DATE |
1000-01-01 ~ 9999-12-31 |
一个日期,以YYYY-MM-DD格式显示 |
TIME |
-838:59:59 ~ 838:59:59 |
一个时间,以HH:MM:SS形式显示 |
DATETIME |
1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
日期和时间 |
TIMESTAMP[(M)] |
1970-01-01 00:00:00 ~ 2037年的某个时间 |
时间标签,在处理报告中有意义。 |
YEAR[(2/4)] |
7069(19702069) |
年份。可以指定2位数字或4位数字的格式。 |
字符串类型
常规字符串类型
CHAR(M) |
0~255个字符 |
固定长度为M的字符串,M的取值为0~255 |
CHAR |
|
CHAR(1)的同义词 |
VARCHAR(M) |
1~255个字符 |
可变长度 |
TEXT和BLOB类型
TINYBLOB |
255 |
小二进制大对象(BLOB)字段 |
TINYTEXT |
255 |
小TEXT字段 |
BLOB |
65535 |
常规BLOB字段 |
TEXT |
65535 |
常规TEXT字段 |
MEDIUMBLOB |
\(2^{24}-1\) |
中型BLOB字段 |
MEDIUMTEXT |
\(2^{24}-1\) |
中型TEXT字段 |
LONGBLOB |
\(2^{32}-1\) |
长BLOB字段 |
LONGTEXT |
\(2^{32}-1\) |
长TEXT字段 |
SET和ENUM类型
ENUM('value1', 'value2', ...) |
65535 |
该类型的列只可以容纳所列值之一或者为NULL |
SET('value1', 'value2', ...) |
64 |
该类型的列可以容纳一组值或者为NULL |
插入数据
1 2
| INSERT [INTO] table_name [(column1, column2, ...)] VALUES(value1, value2, ...);
|
查询数据
1 2 3 4 5 6 7 8 9 10
| SELECT [options] items [INTO file_details] FROM `tables_name` [ WHERE conditions ] [ GROUP BY group_type ] [ HAVING where_definition ] [ ORDER BY order_type ] [ LIMIT limit_criteria ] [ PROCEDURE proc_name(arguments)] [ lock_options ];
|
此处略过1000字
更新数据
1 2 3 4 5
| UPDATE [LOW_PRIORITY] [IGNORE] tablename SET column1 = expression1, ... [ WHERE condition ] [ ORDER BY order_criteria ] [ LIMIT number ]
|